One of the most common and time-consuming difficulties in software development is testing and debugging; yet testing and debugging code is an essential part of the process as it ensures that the product is working as intended. However, it is possible for bugs to be present in the production environment, which contains live data, even once the code has been through a significant amount of testing and debugging.
Debugging code that has entered the production environment is a nuisance for developers, production support and quality assurance. Although many bugs and issues can nevertheless be identified through detailed analysis of the code, it is not always sufficient or even possible to do so. For example, time-sensitive issues related to deadlock on a database—a state in which each member of a group of actions is waiting for another member to release a lock—and time-sensitive message volumes that affect threading models are particularly difficult to debug.
Current techniques for dealing with errors that occur in the production environment include logging, analysing all behaviours, reproducing the error, and running through the code itself. Often the developer relies on user feedback on the usability of the software. Current approaches therefore do not provide a way of debugging and testing code that is causing a production issue to ensure a fluid consumer experience when transactions are rejected or declined.
Therefore there is scope for improvement on current approaches.
The present disclosure has been devised to mitigate or overcome at least some of the above-mentioned problems.